#ifndef FUNCEXPONENT_H
#define FUNCEXPONENT_H

#include "funcModel.h"

namespace QPCRModel {
class funcExponent : public funcModel{  // 需要固定基线值
public:
    funcExponent();

    double f(double x) override;
    double g(double y) override;

    double loss(double x, double y) override;
    double loss(double x, double y, const Eigen::VectorXd &X) override;

    double loss2(double x, double y) override;
    double loss2(double x, double y, const Eigen::VectorXd &X) override;

    double diff1(double x) override;
    double diff2(double x) override;

    Eigen::VectorXd jacobian(double x, double y) override;
    Eigen::VectorXd jacobian2(double x, double y) override;

    double curvity(double x, double norm_coef = 0) override;
    std::pair<double, double> getRange(int i) override;

public:
    void setV(const Eigen::VectorXd &v) override;
    Eigen::VectorXd getV() override;

    int getParamNum() override;
    double getLinearStageFunc(double *lk, double *lb) override;
    void init(double SPE, double EPE, int cycleNum, double ymin, double ymax) override;


public:


};
}

#endif // FUNCEXPONENT_H
